<?php
	// On prolonge la session
	session_start();
	$id_anim='';
	$code='';

	require_once('../../classes/database.php');
	$idconnect=Database::getInstance();

	//vérification des droits de l'utilisateur
		$querytest = pg_query($idconnect,"SELECT id_user, id_droit
  									  FROM droit_utilisateur
 									  where (id_droit = 8 or id_droit = 1) and  id_user =".$_SESSION['membre_id']);
	$lecture_genotypage = pg_num_rows($querytest);
	if($lecture_genotypage == 0){
		header('Location: ../recherche.php');
		exit();
	}
	else{
		// On teste si la variable de session existe et contient une valeur
		if(empty($_SESSION['id_anim'])){
			// Si inexistante ou nulle, on redirige vers la page de saisie du code
			header('Location: ../recherche.php');
			exit();
		}
		else{
			$id_anim=$_SESSION['id_anim'];
			$code=$_SESSION['code'];

			if(isset($_POST['id']) && $_POST['id']!=""){
				$_SESSION['id_anim']=$_POST['id'];
				if(isset($_POST['code']) && $_POST['code']!=""){
					$_SESSION['code']=$_POST['code'];
					header ('Location: ./genealogie.php');
				}
			}
		}
	}

	 function recup_infos($id_anim,$idconnect,$code,$tab){
		//récupération de l'id_portée de l'animal
		$temp = array();
		$sql1 = pg_query($idconnect,"SELECT * FROM animal WHERE id_animal=$id_anim");
		$back = pg_fetch_assoc($sql1);
		$id_portee = $back['id_portee'];

		$temp['code'] = $code;
		if($back['sexe']){$temp['sexe'] = $back['sexe'];}
		else{$temp['sexe']="0";}
		$temp['atrophie'] = chercheAtrophie($id_anim,$idconnect);
		$temp['plaque'] = cherchePlaque($id_anim,$idconnect);
		$tab[$id_anim] = $temp;

		$i = 1;
		if($id_portee){
			//récupération de la mère
			$sql2 = pg_query($idconnect, "SELECT code_animal,code_autre_animalerie,animal.id_animal FROM portee,animal
			WHERE id_animal_mere=animal.id_animal AND portee.id_portee=$id_portee");
			$back2 = pg_fetch_assoc($sql2);
			if($back2['code_animal']){$code_mere=$back2['code_animal'];}
			else if($back2['code_autre_animalerie']){$code_mere=$back2['code_autre_animalerie'];}
			if($back2['id_animal']){
				$tab[$id_anim]['mere'] = $back2['id_animal'];
				$tab = recup_infos($back2['id_animal'],$idconnect,$code_mere,$tab);
			}

			//récupération du père réel
			$sql3 = pg_query($idconnect, "SELECT code_animal,code_autre_animalerie,animal.id_animal FROM est_le_pere,animal
			WHERE est_le_pere.id_animal=animal.id_animal AND est_le_pere.id_portee=$id_portee AND type_pere='réel'");
			$back3 = pg_fetch_assoc($sql3);
			if($back3['code_animal']){$code_pere=$back3['code_animal'];}
			else if($back3['code_autre_animalerie']){$code_pere=$back3['code_autre_animalerie'];}
			if($back3['id_animal']){
				$tab[$id_anim]['pere'] = $back3['id_animal'];
				$tab = recup_infos($back3['id_animal'],$idconnect,$code_pere,$tab);
			}

			//récupération des frères et soeurs
			$sql4 = pg_query($idconnect, "SELECT id_animal,code_animal,code_autre_animalerie,sexe FROM animal WHERE id_portee=$id_portee
			AND id_animal!=$id_anim");

			while($back4 = pg_fetch_assoc($sql4)){
				$temp2 = array();
				if($back4['code_animal']){$code_frere = $back4['code_animal'];}
				else if($back4['code_autre_animalerie']){$code_frere = $back4['code_autre_animalerie'];}

				$temp2['code'] = $code_frere;
				if($back4['sexe']){$temp2['sexe'] = $back4['sexe'];}
				else{$temp2['sexe']="0";}
				$temp2['atrophie'] = chercheAtrophie($back4['id_animal'],$idconnect);
				$temp2['plaque'] = cherchePlaque($back4['id_animal'],$idconnect);
				$temp2['mere'] = $tab[$id_anim]['mere'];
				$temp2['pere'] = $tab[$id_anim]['pere'];
				$temp2["frere$i"] = $id_anim;

				$tab[$back4['id_animal']] = $temp2;
				$tab[$id_anim]["frere$i"] = $back4['id_animal'];
				$i++;
			}
		}
		$i= 1;
		return $tab;
	}

	function chercheAtrophie($id_anim,$idconnect){
		//recherche si l'animal a une atrophie
		$sql = pg_query($idconnect,"SELECT localisation_atrophie FROM animal,resultat_test,irm
		WHERE animal.id_animal=$id_anim AND animal.id_animal=resultat_test.id_animal AND irm.id_res=resultat_test.id_res");
		while($back = pg_fetch_assoc($sql)){
			if($back['localisation_atrophie']){return true;}
			else{return false;}
		}
	}

	function cherchePlaque($id_anim,$idconnect){
		//recherche si l'animal a des plaques amyloïdes
		$sql = pg_query($idconnect,"SELECT diagnostic FROM animal,resultat_test,test_immunologique
		WHERE animal.id_animal=$id_anim AND animal.id_animal=resultat_test.id_animal
		AND test_immunologique.id_res=resultat_test.id_res AND code_anticorps='Aβ1-42 (FCA3542)'");
		while($back = pg_fetch_assoc($sql)){
			if($back['diagnostic'] && $back['diagnostic']=="positif"){return true;}
			else{return false;}
		}
	}

	function typesvg($tab,$id,$x,$y,$message){
		//dessin des formes en fonction du sexe donné
		foreach($tab as $cle=>$value){
			if($cle==$id){
				$temp ="";
				if($value['sexe']=="F"){
					$y1=$y+10;
					if(strlen($value['code'])==1){$x1=$x-10;}
					else if(strlen($value['code'])==2){$x1=$x-15;}
					else if(strlen($value['code'])==3){$x1=$x-30;}
					else{$x1=$x-50;}
					$temp .="<text y=\"$y1\" x=\"$x1\" fill=\"red\" font-size=\"40\" onclick=\"arbre($id,".$value['code'].")\">".$value['code']."</text>";
					$message="<circle cx=\"".$x."px\" cy=\"".$y."px\" r=\"50\" ";
				}
				else if($value['sexe']=="M"){
					$y1=$y+50;
					if(strlen($value['code'])==1){$x1=$x+35;}
					else if(strlen($value['code'])==2){$x1=$x+25;}
					else if(strlen($value['code'])==3){$x1=$x+15;}
					else{$x1=$x+5;}
					$temp .="<text y=\"$y1\" x=\"$x1\" fill=\"red\" font-size=\"40\" onclick=\"arbre($id,".$value['code'].")\">".$value['code']."</text>";
					$message.= "<rect x=\"".$x."px\" y=\"".$y."px\" width=\"87\" height=\"87\" ";
				}
				else{
					$y1=$y-15;
					if(strlen($value['code'])==1){$x1=$x-50;}
					else if(strlen($value['code'])==2){$x1=$x-55;}
					else if(strlen($value['code'])==3){$x1=$x+15;}
					else{$x1=$x+5;}
					$x2=$x+28;$y2=$y-25;$x3=$x-36;$y3=$y-80;$x4=$x-102;$y4=$y-21;$x5=$x-36;$y5=$y+33;

					$message.="<polygon points=\"$x,$y $x2,$y2 $x3,$y3 $x4,$y4 $x5,$y5 $x,$y\" transform=\" \"";
					$temp .="<text y=\"".$y1."\" x=\"".$x1."\" fill=\"red\" font-size=\"40\" onclick=\"arbre($id,".$value['code'].")\">".$value['code']."</text>";
				}

				if($value['atrophie']==true && $value['plaque']==false){
					$message .= "style=\"fill:rgb(255,255,255);stroke:rgb(255,0,0)\" stroke-width=\"3\"/>";
				}
				else if($value['atrophie']==true && $value['plaque']==true){
					$message .= " style=\"fill:rgb(0,0,0);stroke:rgb(255,0,0)\" stroke-width=\"3\"/>";
				}
				else if($value['atrophie']==false && $value['plaque']==false){
					$message .= "style=\"fill:rgb(255,255,255);stroke:rgb(0,0,0)\" />";
				}
				else if($value['atrophie']==false && $value['plaque']==true){
					$message .= "style=\"fill:rgb(0,0,0)\"/>";
				}
				$message.=$temp;
				return $message;
			}
		}
	}
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <link rel="stylesheet" href="../../style.css" />
        <?php
			require_once(dirname(__FILE__)."/onglet_animal.php");
			$onglet = affiche_onglets($_SESSION['membre_id']);
		?>
		<!--[if lt IE 9]>
        <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->
        <!--[if lte IE 7]>
        <link rel="stylesheet" href="../../style_ie.css" />
        <![endif]-->
        <title>Base de données microcèbes</title>

        <script>
			function arbre(value_id,value_code){
			document.forms['form1'].id.value = value_id;
			document.forms['form1'].code.value = value_code;
			document.forms['form1'].submit();
		}
        </script>
    </head>

    <body>
		<?php include((dirname(dirname(dirname(__FILE__))))."/menu.php"); ?>

		<section id="main">
			<header>
				<h1>Généalogie - animal <?php echo $code; ?></h1>
			</header>
			<?php include((dirname(dirname(__FILE__)))."/menu_recherche.php"); ?>
			<section id="animal">
				<?php
					echo $onglet;
				?>

				<section id="arbre">

				    <?php
				    $tab = array();
				    $message="";
				    $tab=recup_infos($id_anim,$idconnect,$code,$tab,$message);
				    $liste = array();
					$i=0;

					if($tab[$id_anim]['sexe']=='0'){$x=800;$y=900;	}
					else if($tab[$id_anim]['sexe']=='F'){$x=800;$y=850;	}
					else{$x=700;$y=850; }

					foreach($tab as $cle=>$value){
						if(!array_key_exists($cle,$liste)){
							$liste[$cle]['x']=$x;
							$liste[$cle]['y']=$y;
							$message .= typesvg($tab,$cle,$liste[$cle]['x'],$liste[$cle]['y'],$message);
						}
						$x1=$liste[$cle]['x'];
						foreach($value as $cle2=>$val){
							if($cle2=="mere" && !array_key_exists($val,$liste)){
								$i++;
								//si l'animal en cours est une femelle et que le père réel est connu et qu'on est dans une génération paire
								//la mère sera au-dessus de l'enfant
								if($value['sexe']=='F' && array_key_exists("pere",$value) && ($i%2==0)){
									$liste[$val]['y']=$liste[$cle]['y']-180;
									$liste[$val]['x']=$liste[$cle]['x']-0;
								}
								//si l'animal en cours est une femelle et que le père réel est connu et qu'on est dans une génération impaire
								//le père sera au-dessus de l'enfant
								else if($value['sexe']=='F' && array_key_exists("pere",$value) && ($i%2!=0)){
									$liste[$val]['y']=$liste[$cle]['y']-190;
									$liste[$val]['x']=$liste[$cle]['x']-250;
								}
								//si l'animal en cours est une femelle mais que le pere réel est inconnu
								//la mère sera au-dessus de l'enfant
								else if($value['sexe']=='F' && !array_key_exists("pere",$value)){
									$liste[$val]['y']=$liste[$cle]['y']-190;
									$liste[$val]['x']=$liste[$cle]['x'];
								}

								//si l'animal en cours est un mâle et que le père réel est connu et génération paire
								//la mère sera au-dessus de l'enfant
								else if($value['sexe']=='M' && array_key_exists("pere",$value) && ($i%2==0)){
									$liste[$val]['y']=$liste[$cle]['y']-145;
									$liste[$val]['x']=$liste[$cle]['x']+40;
								}
								//si l'animal en cours est un mâle et que le père réel est connu et génération impaire
								//le père sera au-dessus de l'enfant
								else if($value['sexe']=='M' && array_key_exists("pere",$value) && ($i%2!=0)){
									$liste[$val]['y']=$liste[$cle]['y']-120;
									$liste[$val]['x']=$liste[$cle]['x']+40;
								}
								//si l'animal en cours est un mâle mais que le pere réel est inconnu
								else if($value['sexe']=='M' && !array_key_exists("pere",$value)){
									$liste[$val]['y']=$liste[$cle]['y']-120;
									$liste[$val]['x']=$liste[$cle]['x']+40;
								}

								//si l'animal en cours a un sexe indéterminé et que le père réel est connu et génération paire
								//la mère sera au_dessus de l'enfant
								else if($value['sexe']=='0' && array_key_exists("pere",$value) && ($i%2==0)){
									$liste[$val]['y']=$liste[$cle]['y']-225;
									$liste[$val]['x']=$liste[$cle]['x']-260;
								}
								//si l'animal en cours a un sexe indéterminé et que le père réel est connu et génération impaire
								//le père sera au_dessus de l'enfant
								else if($value['sexe']=='0' && array_key_exists("pere",$value) && ($i%2!=0)){
									$liste[$val]['y']=$liste[$cle]['y']-225;
									$liste[$val]['x']=$liste[$cle]['x']-35;
								}
								//si l'animal en cours a un sexe indéterminé et que le pere réel est inconnu
								else if($value['sexe']=='0' && !array_key_exists("pere",$value)){
									$liste[$val]['y']=$liste[$cle]['y']-235;
									$liste[$val]['x']=$liste[$cle]['x']-35;
								}

								$message .= typesvg($tab,$val,$liste[$val]['x'],$liste[$val]['y'],$message);
							}

							else if($cle2=="pere" && !array_key_exists($val,$liste)){
								$i++;
								//si génération paire
								if($value['sexe']=='F' && ($i%2==0)){
									$liste[$val]['y']=$liste[$cle]['y']-230;
									$liste[$val]['x']=$liste[$cle]['x']-40;
								}
								//si génération impaire
								else if($value['sexe']=='F' && ($i%2!=0)){
									$liste[$val]['y']=$liste[$cle]['y']-230;
									$liste[$val]['x']=$liste[$cle]['x']+200;
								}

								//si génération paire
								else if($value['sexe']=='M' && ($i%2==0)){
									$liste[$val]['y']=$liste[$cle]['y']-160;
									$liste[$val]['x']=$liste[$cle]['x']+230;
								}
								//si génération impaire
								else if($value['sexe']=='M' && ($i%2!=0)){
									$liste[$val]['y']=$liste[$cle]['y']-185;
									$liste[$val]['x']=$liste[$cle]['x']+230;
								}

								//si génération paire
								else if($value['sexe']=='0' && ($i%2==0)){
									$liste[$val]['y']=$liste[$cle]['y']-270;
									$liste[$val]['x']=$liste[$cle]['x']+150;
								}
								//si génération impaire
								else if($value['sexe']=='0' && ($i%2!=0)){
									$liste[$val]['y']=$liste[$cle]['y']+555;
									$liste[$val]['x']=$liste[$cle]['x']-400;
								}

								$message .= typesvg($tab,$val,$liste[$val]['x'],$liste[$val]['y'],$message);
							}

							else if($cle2=="frere1" && !array_key_exists($val,$liste)){
								if($value['sexe']=='F'){
									//si le frère/soeur a un sexe indéterminé
									if($tab[$val]['sexe']=='0'){
										$liste[$val]['y']=$liste[$cle]['y']+20;
										$liste[$val]['x']=$x1-125;
									}
									//si le frère/soeur est une femelle
									if($tab[$val]['sexe']=='F'){
										$liste[$val]['y']=$liste[$cle]['y'];
										$liste[$val]['x']=$x1-150;
									}
									//si le frère/soeur est un mâle
									if($tab[$val]['sexe']=='M'){
										$liste[$val]['y']=$liste[$cle]['y']-40;
										$liste[$val]['x']=$x1-200;
									}
								}
								else if($value['sexe']=='M'){
									//si le frère/soeur a un sexe indéterminé
									if($tab[$val]['sexe']=='0'){
										$liste[$val]['y']=$liste[$cle]['y']+65;
										$liste[$val]['x']=$x1+250;
									}
									//si le frère/soeur est une femelle
									if($tab[$val]['sexe']=='F'){
										$liste[$val]['y']=$liste[$cle]['y']+45;
										$liste[$val]['x']=$x1+210;
									}
									//si le frère/soeur est un mâle
									if($tab[$val]['sexe']=='M'){
										$liste[$val]['y']=$liste[$cle]['y'];
										$liste[$val]['x']=$x1+150;
									}
								}
								else{
									//si le frère/soeur a un sexe indéterminé
									if($tab[$val]['sexe']=='0'){
										$liste[$val]['y']=$liste[$cle]['y']-5;
										$liste[$val]['x']=$x1+170;
									}
									//si le frère/soeur est une femelle
									if($tab[$val]['sexe']=='F'){
										$liste[$val]['y']=$liste[$cle]['y']-30;
										$liste[$val]['x']=120+$x1;
									}
									//si le frère/soeur est un mâle
									if($tab[$val]['sexe']=='M'){
										$liste[$val]['y']=$liste[$cle]['y']-70;
										$liste[$val]['x']=$x1+90;
									}
								}
								$message .= typesvg($tab,$val,$liste[$val]['x'],$liste[$val]['y'],$message);
							}

							else if($cle2=="frere2" && !array_key_exists($val,$liste)){
								if($value['sexe']=='F'){
									//si le frère/soeur a un sexe indéterminé
									if($tab[$val]['sexe']=='0'){
										$liste[$val]['y']=$liste[$cle]['y']+20;
										$liste[$val]['x']=$x1-280;
									}
									//si le frère/soeur est une femelle
									if($tab[$val]['sexe']=='F'){
										$liste[$val]['y']=$liste[$cle]['y'];
										$liste[$val]['x']=$x1-300;
									}
									//si le frère/soeur est un mâle
									if($tab[$val]['sexe']=='M'){
										$liste[$val]['y']=$liste[$cle]['y']-40;
										$liste[$val]['x']=$x1-360;
									}
								}
								else if($value['sexe']=='M'){
									//si le frère/soeur a un sexe indéterminé
									if($tab[$val]['sexe']=='0'){
										$liste[$val]['y']=$liste[$cle]['y']+65;
										$liste[$val]['x']=$x1+400;
									}
									//si le frère/soeur est une femelle
									if($tab[$val]['sexe']=='F'){
										$liste[$val]['y']=$liste[$cle]['y']+45;
										$liste[$val]['x']=$x1+375;
									}
									//si le frère/soeur est un mâle
									if($tab[$val]['sexe']=='M'){
										$liste[$val]['y']=$liste[$cle]['y'];
										$liste[$val]['x']=$x1+330;
									}
								}
								else{
									//si le frère/soeur a un sexe indéterminé
									if($tab[$val]['sexe']=='0'){
										$liste[$val]['y']=$liste[$cle]['y']-5;
										$liste[$val]['x']=$x1+350;
									}
									//si le frère/soeur est une femelle
									if($tab[$val]['sexe']=='F'){
										$liste[$val]['y']=$liste[$cle]['y']-30;
										$liste[$val]['x']=300+$x1;
									}
									//si le frère/soeur est un mâle
									if($tab[$val]['sexe']=='M'){
										$liste[$val]['y']=$liste[$cle]['y']-70;
										$liste[$val]['x']=$x1+275;
									}
								}
								$message .= typesvg($tab,$val,$liste[$val]['x'],$liste[$val]['y'],$message);
							}
						}
					}

					//tracage des traits entre les animaux => parenté
					foreach($tab as $cle=>$value){
						if(array_key_exists("mere",$value) && array_key_exists("pere",$value)){
							$mere = $value["mere"];
							$x1=$liste[$mere]['x']+50;
							$y1=$liste[$mere]['y'];

							$pere = $value["pere"];
							$x2=$liste[$pere]['x'];
							$y2=$liste[$mere]['y'];
							$message.="<line x1=\"$x1\" y1=\"$y1\" x2=\"$x2\" y2=\"$y2\" stroke=\"black\" stroke-width=\"1\" />";

							$xmoy = ($x1+$x2)/2;
							$ymoy = $y1+80;
							$message.="<line x1=\"$xmoy\" y1=\"$y1\" x2=\"$xmoy\" y2=\"$ymoy\" stroke=\"black\" stroke-width=\"1\" />";

							if($value['sexe']=="F"){
								$x3=$liste[$cle]['x'];
								$y3=$liste[$cle]['y']-50;
								$message.="<line x1=\"$xmoy\" y1=\"$ymoy\" x2=\"$x3\" y2=\"$y3\" stroke=\"black\" stroke-width=\"1\" />";
							}
							else if($value['sexe']=="M"){
								$x3=$liste[$cle]['x']+40;
								$y3=$liste[$cle]['y'];
								$message.="<line x1=\"$xmoy\" y1=\"$ymoy\" x2=\"$x3\" y2=\"$y3\" stroke=\"black\" stroke-width=\"1\" />";
							}
							else{
								$x3=$liste[$cle]['x']-36;
								$y3=$liste[$cle]['y']-78;
								$message.="<line x1=\"$xmoy\" y1=\"$ymoy\" x2=\"$x3\" y2=\"$y3\" stroke=\"black\" stroke-width=\"1\" />";
							}

						}
						else if(array_key_exists("mere",$value)){
							$mere = $value["mere"];

							$x1=$liste[$mere]['x'];
							$y1=$liste[$mere]['y']+50;

							if($value['sexe']=='M'){
								$x2=$liste[$cle]['x']+40;
								$y2=$liste[$cle]['y'];
							}
							else if($value['sexe']=='F'){
								$x2=$liste[$cle]['x'];
								$y2=$liste[$cle]['y']-50;
							}
							else{
								$x2=$liste[$cle]['x']-35;
								$y2=$liste[$cle]['y']-25;
							}
							$message.="<line x1=\"$x1\" y1=\"$y1\" x2=\"$x2\" y2=\"$y2\" stroke=\"black\" stroke-width=\"1\" />";
						}
					}
				     //tracage des traits pour savoir si l'animal est vivant ou décédé
				    foreach($tab as $cle=>$value){
						//récupération de l'info sur la date de décès ou le code histologique
						$sql = pg_query($idconnect,"SELECT date_deces,code_histologique FROM Animal WHERE id_animal=$cle");
						if($value['sexe']=="F"){
							$x1 = $liste[$cle]['x']+50;
							$y1 = $liste[$cle]['y']-50;
							$x2 = $liste[$cle]['x']-50;
							$y2 = $liste[$cle]['y']+50;
						}
						else if($value['sexe']=="M"){
							$x1 = $liste[$cle]['x']+100;
							$y1 = $liste[$cle]['y']-10;
							$x2 = $liste[$cle]['x']-10;
							$y2 = $liste[$cle]['y']+100;
						}
						else{
							$x1 = $liste[$cle]['x']-80;
							$y1 = $liste[$cle]['y']+20;
							$x2 = $liste[$cle]['x']+10;
							$y2 = $liste[$cle]['y']-65;
						}
						while($back = pg_fetch_assoc($sql)){
							if($back['date_deces'] || $back['code_histologique']){
								$message.= "<line x1=\"$x1\" y1=\"$y1\" x2=\"$x2\" y2=\"$y2\" stroke=\"black\" stroke-width=\"1\" />";
							}
						}
					}

					?>

					<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="700" height="500" viewbox="0 0 1500 1000">
						<?php echo $message;?>
					</svg>
					<form name="form1" method="post" action="genealogie.php">
					<input type="hidden" name="id" value="">
					<input type="hidden" name="code" value="">
					</form>
				</section>
			</section>

		</section>
	</body>
</html>
